<?php
/**
 * 自动更新钩子
 * 修改验证码及项目路径即可使用，
 * 修改项如下：
 * 1、您的自定义密码
 * 2、/home/wwwroot/app您的项目A路径
 * [冲浪蜗牛](https://www.jianshu.com/u/4913fc14f7fb)
 **/
 
// 接收码云POST过来的信息
// $signature = $_SERVER['HTTP_X_HUB_SIGNATURE'];
// $json = $GLOBALS['HTTP_RAW_POST_DATA'];
$json = file_get_contents("php://input");
$data = json_decode($json, true);
 
// 打开网站目录下的hooks.log文件 需要在服务器上创建 并给写权限
$fs = fopen('./../../../../wwwlogs/webhooks_pull.log', 'a');
fwrite($fs, '================ Update Start ===============' . PHP_EOL . PHP_EOL);
// 自定义密码 用于验证 与码云后台设置保持一致
$access_token = 'caishuhua2021';
$client_token = $data['password'];
 
// 请求ip
$client_ip = $_SERVER['REMOTE_ADDR'];
// 把请求的IP和时间写进log
fwrite($fs, 'Request on [' . date("Y-m-d H:i:s") . '] from [' . $client_ip . ']' . PHP_EOL);
// 验证token 有错就写进日志并退出
if ($client_token !== $access_token) {
    echo "error 403";
    fwrite($fs, "Invalid token [{$client_token}]" . PHP_EOL);
    $fs and fclose($fs);
    exit(0);
}
 
// 如果有需要 可以打开下面，把传送过来的信息写进log 可用于调试，测试成功后注释即可
// fwrite($fs, 'Data: ' . print_r($data, true) . PHP_EOL);  
// git pull 2<&1
 
// 执行shell命令并把返回信息写进日志
exec('cd /www/wwwroot/fastadmin/csh-fastadmin; git pull 2<&1; chown -R www:www /www/wwwroot/fastadmin/csh-fastadmin/*;', $output);
fwrite($fs, 'Info:' . print_r($output, true) . PHP_EOL);
fwrite($fs, PHP_EOL . '================ Update End ===============' . PHP_EOL . PHP_EOL);
$fs and fclose($fs);
echo 'git pull ok => webhooks_pull.log => '. $data['hook_id'];
// 调试时打开
// echo json_encode($output);
